package RDD

import org.apache.commons.lang3.StringUtils
import org.apache.spark.{SparkConf, SparkContext}

object 练习题 {
  def main(args: Array[String]): Unit = {
    //创建SparkContext
    val conf = new SparkConf().setMaster("local[6]").setAppName("Test")
    val sc = new SparkContext(conf)
    //读取数据
    val source = sc.textFile("E:\\IDEA\\IntelliJ IDEA 2019.1\\sp\\resource\\a.csv")
      //抽取其中的几列数据
      .map {
        item =>
          val datas = item.split(",");
          ((datas(1), datas(2)), datas(6))
      }
      //数据清洗，删除掉空数据和NA
      .filter(item => StringUtils.isNotEmpty(item._2) && !item._2.equalsIgnoreCase("NA"))
      //将value的数据类型转换成int
      .map(item => (item._1, item._2.toInt))
      //按key分组，累加求和
      .reduceByKey((curr, agg) => curr + agg)
      //按照value进行排序
      .sortBy(item => item._2,ascending = false)
      //只选取前十列
      .take(10)
      //循环输出
      .foreach(println(_))
    //关闭资源
    sc.stop()
  }
}
